package connectors;

import java.io.File;
import java.util.LinkedList;

import model.Expense;
import model.Income;
import model.Transfer;

public interface DataSource {
	
	public void initialize(File location);
	
	public void addExpense(Expense expense);
	public void removeExpense(Expense expense);
	
	public void addIncome(Income income);
	public void removeIncome(Income transaction);
	
	public void addTransfer(Transfer transfer);
	
	public LinkedList<Expense> getDayExpenses(int year, int month, int day, Integer category, Integer account);
	public LinkedList<Income> getDayIncome(int year, int month, int day, Integer account);
	public LinkedList<Expense> getMonthExpenses(int year, int month, Integer category, Integer account);
	public LinkedList<Income> getMonthIncome(int year, int month, Integer account);
	public LinkedList<Expense> getYearExpenses(int year, Integer category, Integer account);
	public LinkedList<Income> getYearIncome(int year, Integer account);
	public Object[] getCoveredYears();
	
	public LinkedList<String> getCategories();	
	public void setCategories(LinkedList<String> categories);	
	public int getDefaultCategory();
	public Integer getDefaultCategoryAsInteger();
	public void setDefaultCategory(int defaultCategory);
	
	public LinkedList<String> getAccounts();
	public void setAccounts(LinkedList<String> accounts);
	public int getDefaultAccount();
	public Integer getDefaultAccountAsInteger();
	public void setDefaultAccount(int defaultAccount);
	
	public String[] getPopularVenues();
	public LinkedList<Object> getRecentTransactions();
	
	public void store(File location);
	public void read(File location);
	public void readDefaults();

	

	
}
